using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using bookMaster.AssetSystem.Data;

namespace bookMaster.AssetSystem.Shell.Controles
{
    public partial class ctlBusqueda : UserControl
    {
        Dictionary<string, IFiltros> filtros;
        public event EventHandler BuscarClick;
        public event EventHandler LimpiarClick;

        public ctlBusqueda()
        {
            InitializeComponent();

            filtros = new Dictionary<string, IFiltros>();
        }


        public void AgregarFiltro(string columna , ctlFiltroTexto filtroTexto)
        {
            AgregarControl(filtroTexto);
            AgregarColumna(columna, filtroTexto);
        }

        public void AgregarFiltro(string columna, ctlFiltroValores filtroValor)
        {
            AgregarControl(filtroValor);
            AgregarColumna(columna, filtroValor);
        }

        private void AgregarColumna(string nombre, IFiltros filtro)
        {
            filtros.Add(nombre, filtro);
            cmbColumna.Items.Add(nombre);

            if (filtros.Count == 1)
            {
                m_ColumnaActual = nombre;
                cmbColumna.SelectedIndex = 0;
            }
        }

        private void AgregarControl(Control ctl)
        {
            panelControles.Controls.Add(ctl);
            panelControles.Controls[ctl.Name].Location = new Point(1, 3);
            panelControles.Controls[ctl.Name].Size = new Size(panelControles.Size.Width-1, 21);
            panelControles.Controls[ctl.Name].Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))));
            panelControles.Controls[ctl.Name].Visible = false;

        }

        //public void IniciarControl()
        //{
        //    cmbColumna.SelectedIndex = 0;
        //}


        private string m_ColumnaActual;

        public string ColumnaActual { get { return m_ColumnaActual; } set { m_ColumnaActual = value; } }


        private void cmbColumna_SelectedIndexChanged(object sender, EventArgs e)
        {
            filtros[m_ColumnaActual].SetVisible = false;
            filtros[cmbColumna.Text].SetVisible = true;
            m_ColumnaActual = cmbColumna.Text;
        }


        public StringBuilderExpression Operador
        {
            get
            {
                return filtros[m_ColumnaActual].Operador;
            }
        }

        

        public string Valor
        {
            get
            {
                return filtros[m_ColumnaActual].Valor;
            }
        }

        private void cmdBuscar_Click(object sender, EventArgs e)
        {
            if (BuscarClick != null)
            {
               BuscarClick(this, EventArgs.Empty);
            }
        }

        private void cmdLimpiar_Click(object sender, EventArgs e)
        {
            if (LimpiarClick != null)
            {
                LimpiarClick(this, EventArgs.Empty);
            }
        }
    }

    public interface IFiltros
    {
        StringBuilderExpression Operador
        {
            get;
        }

        bool SetVisible
        {
           set;
        }

        string Valor
        {
            get;
        }
    }

}
